home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 12 / Amiga Plus Sonderheft Amiga 12.iso / pd / spiele / klondike_adptools / install / datas / english.lha / 4-RenderCards.adpro < prev    next >
Text File  |  1997-08-22  |  28KB  |  1,228 lines

  1. /*
  2. ** RenderCards.adpro :
  3. **
  4. **  This ARexx script for ADPro v2.5 or higher,
  5. **  load 52 scaled pictures, global palette, 52 symbols pictures, render & save them to IFF HAM8 88x130
  6. **
  7. **  Klondike & Reko Tools © Copyright Reko Productions - All Rights Reserved.
  8. **
  9. ** $VER: RenderCards/English v2.0 (16.06.97) Copyright © 1995-97 Lejardinier Olivier - All Rights Reserved
  10. **
  11. */
  12.  
  13. /*
  14. ** ARexx Initializations.
  15. */
  16.  
  17.  ADDRESS "ADPro"
  18.  OPTIONS RESULTS
  19.  ReturnCode = 0
  20.  
  21. /*
  22. ** Parse Arguments.
  23. */
  24.  
  25.  PARSE ARG Mode
  26.  
  27. /*
  28. ** Constants Initializations.
  29. */
  30.  
  31.  NL = '0A'X
  32.  DNL = NL || NL
  33.  FALSE = 0
  34.  TRUE = 1
  35.  
  36. /*
  37. ** Strings initializations.
  38. */
  39.  
  40.  TITLE_Error = "Error :"
  41.  TITLE_Request = "Request :"
  42.  TITLE_Confirm = "Confirm :"
  43.  TITLE_Infos = "Informations :"
  44.  TITLE_SelectScaledPic = "Select 1 scaled picture :"
  45.  TITLE_SelectSymbolPic = "Select 1 symbol picture :"
  46.  TITLE_SelectPalette = "Select global palette :"
  47.  TITLE_SelectCardPicsDir = "Select cards pictures destination :"
  48.  TITLE_EnterCardPicsBaseName = "Enter cardset name to create :"
  49.  TITLE_SelectCardsetType = "Choose cardset type :"
  50.  TITLE_SelectExtraPic = "Select extra picture"
  51.  
  52.  MSG_Abort = "Abort ?"
  53.  MSG_ErrorCode = "Error code ="
  54.  MSG_ADProResult = "ADPro result ="
  55.  
  56.  MSG_UnableToSaveADProPrefs = "Unable to save ADPro prefs."
  57.  MSG_UnableToRestoreADProPrefs = "Unable to restore ADPro prefs."
  58.  
  59.  MSG_WhatCardsToRender = "What kind of cards do you want to create ?"
  60.  
  61.  MSG_YouMustSelectScaledPic = "You MUST select 1 scaled picture !"
  62.  MSG_UnableToLoadScaledPic = "Unable to load scaled picture :"
  63.  MSG_CheckingScaledPic = "Checking scaled picture :"
  64.  MSG_InvalidScaledPic = "Invalid scaled picture size"
  65.  MSG_MissingScaledPic = "Some scaled pictures are missing"
  66.  
  67.  MSG_YouMustSelectSymbolPic = "You MUST select 1 symbol picture !"
  68.  MSG_UnableToLoadSymbolPic = "Unable to load symbol picture :"
  69.  MSG_CheckingSymbolPic = "Checking symbol picture :"
  70.  MSG_InvalidSymbolPic = "Invalid symbol picture size"
  71.  MSG_MissingSymbolPic = "Some symbols pictures are missing"
  72.  
  73.  MSG_UnableToLoadPalette = "Unable to load palette :"
  74.  MSG_UnableToExtractPaletteInfos = "Unable to extract color 0 from palette :"
  75.  
  76.  MSG_Processing = "Processing"
  77.  MSG_CreatingBackdropPic = "Creating backdrop picture"
  78.  MSG_ComposingWithScaledPic = "Composing with scaled picture"
  79.  MSG_RenderingCardPass1 = "Rendering : Pass 1"
  80.  MSG_ComposingWithSymbolPic = "Composing with symbol picture"
  81.  MSG_RenderingCardPass2 = "Rendering : Pass 2"
  82.  MSG_SavingCard = "Saving card picture"
  83.  
  84.  MSG_UnableToCreateBackdropPic = "Unable to create backdrop picture"
  85.  MSG_UnableToRenderScaledPic = "Unable to render card picture (Pass 1)"
  86.  MSG_UnableToRenderCardPic = "Unable to render card picture ( Pass 2)"
  87.  MSG_UnableToSaveCardPic = "Unable to save card picture :"
  88.  
  89.  MSG_CarsetType = "What kind of cardset do you want to create ?" || DNL || "55 cards (standard)" || NL || "59 cards (extra cards)"
  90.  MSG_CheckingCardPic = "Checking card picture :"
  91.  
  92.  MSG_UnableToLoadExtraPic = "Unable to load extra picture :"
  93.  MSG_CheckingExtraPic = "Checking extra picture"
  94.  MSG_InvalidExtraPicSizeSmall = "Extra picture size too small"
  95.  MSG_InvalidExtraPicSizeBig = "Exrta picture size too big"
  96.  MSG_UnableToScaleExtraPic = "Unable to scale extra picture :"
  97.  MSG_UnableToSaveExtraCardPic = "Unable to save extra card picture :"
  98.  
  99.  GAD_Abort = "Abort"
  100.  GAD_ContinueAbort = "Continue|Abort"
  101.  GAD_AllNormalExtraAbort = "All|Normals|Extras|Abort"
  102.  GAD_SelectAbort = "Select|Abort"
  103.  GAD_Quit = "Quit"
  104.  GAD_RetrySelectAbort = "Retry|Select|Abort"
  105.  GAD_RetryAbort = "Retry|Abort"
  106.  GAD_RetrySkipAbort = "Retry|Skip|Abort"
  107.  GAD_StdExtAbort = "55 cards|59 cards|Abort"
  108.  GAD_ScaleSelectAbort = "Scale|Select|Abort"
  109.  
  110. /*
  111. ** Save the current ADPro environment.
  112. */
  113.  
  114.  TempDefaults = "T:TempADProDefaults"
  115.  
  116.  SAVE_DEFAULTS '"'TempDefaults'"'
  117.  IF ( RC ~= 0 ) THEN
  118.   DO
  119.    Text = MSG_UnableToSaveADProPrefs || MSG_ADProError ADPRO_RESULT
  120.    OKAY1 '"'Text'"'
  121.   END
  122.  
  123. /*
  124. ** Initializations of new ADPro environment.
  125. */
  126.  
  127.  CLOSE_RENDER_SCREEN
  128.  CLEAR_RENDERED
  129.  CLEAR_RAW
  130.  PSTATUS "UNLOCKED"
  131.  DISPLAYMESSAGE '""'
  132.  ADPRO_TO_FRONT
  133.  
  134. /*
  135. ** Menu.
  136. */
  137.  
  138.  IF ( Mode = "AUTO" ) THEN
  139.   RenderCardsType = 1
  140.  ELSE
  141.  DO
  142.  
  143.  Continue = FALSE
  144.  DO UNTIL ( Continue = TRUE )
  145.  
  146.   OKAYN '"'TITLE_Request'"' '"'MSG_WhatCardsToRender'"' '"'GAD_AllNormalExtraAbort'"'
  147.   
  148.   IF ( RC = 0 ) THEN
  149.    CALL ConfirmAbort
  150.   ELSE
  151.    DO
  152.     RenderCardsType = RC
  153.     Continue = TRUE
  154.    END
  155.    
  156.  END
  157.  
  158.  END
  159.  
  160. /*
  161. ** Get a previously scaled picture and check it.
  162. */
  163.  
  164.  ScaledPicsDir = GetPref( "KADPT.ScaledPicsDir" )
  165.  
  166.  IF ( RenderCardsType < 3 ) THEN
  167.  DO
  168.  
  169.  IF ( ( Mode = "AUTO" ) & ( ScaledPicsDir ~= "" ) ) THEN
  170.   DO
  171.    ScaledPicsBaseName = GetPref( "KADPT.ScaledPicsBaseName" )
  172.    ScaledPicPath = AddPart( ScaledPicsDir, AddExt( ScaledPicsBaseName, "001" ) )
  173.    RetVal = CheckScaledPics( ScaledPicPath )
  174.    IF ( WORD( RetVal, 1 ) ~= 52 ) THEN
  175.     DO
  176.      ReturnCode = 10
  177.      CALL Quit
  178.     END
  179.   END
  180.  ELSE
  181.  DO
  182.  
  183.  Continue = FALSE
  184.  DO UNTIL ( Continue = TRUE )
  185.   
  186.   IF ( ScaledPicsDir ~= "" ) THEN
  187.    GETFILE '"'TITLE_SelectScaledPic'"' '"'ParseDir( ScaledPicsDir )'"' '""'
  188.   ELSE
  189.    GETFILE '"'TITLE_SelectScaledPic'"'
  190.  
  191.   IF ( RC ~= 0 ) THEN
  192.    DO
  193.     OKAYN '"'TITLE_Error'"' '"'MSG_YouMustSelectScaledPic'"' '"'GAD_SelectAbort'"'
  194.     IF ( RC = 0 ) THEN
  195.      CALL ConfirmAbort
  196.    END
  197.   ELSE
  198.    DO
  199.     ScaledPicPath = ADPRO_RESULT
  200.     
  201.     RetVal = CheckScaledPics( ScaledPicPath )
  202.     
  203.     IF ( WORD( RetVal, 1 ) = 52 ) THEN
  204.      DO
  205.       SetPref( "KADPT.ScaledPicsDir", WORD( RetVal, 2 ) )
  206.       Continue = TRUE
  207.      END
  208.    END
  209.  END
  210.  
  211.  END
  212.  
  213.  ScaledPicsDir = WORD( RetVal, 2 )
  214.  ScaledPicsBaseName = WORD( RetVal, 3 )
  215.  NbScaledPics = WORD( RetVal, 1 )
  216.  
  217.  END
  218.  
  219. /*
  220. ** Get global palette.
  221. */
  222.  
  223.  PalettePath = GetPref( "KADPT.PalettePath" )
  224.  
  225.  IF ( ( Mode = "AUTO" ) & ( PalettePath ~= "" ) ) THEN
  226.   DO
  227.    PaletteCol0 = GetPaletteCol0( PalettePath )
  228.    IF ( PaletteCol0 = "" ) THEN
  229.     DO
  230.      ReturnCode = 10
  231.      CALL Quit
  232.     END
  233.   END
  234.  ELSE
  235.  DO
  236.  
  237.  IF ( PalettePath = "" ) THEN
  238.   DO
  239.    PaletteDir = ScaledPicsDir
  240.    PaletteName = AddExt( ScaledPicsBaseName, "Palette" )
  241.   END
  242.  ELSE
  243.   DO
  244.    PaletteDir = DirPart( PalettePath )
  245.    PaletteName = FilePart( PalettePath )
  246.   END
  247.  
  248.  Continue = FALSE
  249.  DO UNTIL ( Continue = TRUE )
  250.   
  251.   GETFILE '"'TITLE_SelectPalette'"' '"'ParseDir( PaletteDir )'"' '"'ParseString( PaletteName )'"'
  252.  
  253.   IF ( RC ~= 0 ) THEN 
  254.    CALL ConfirmAbort
  255.   ELSE
  256.    DO
  257.     PalettePath = ADPRO_RESULT
  258.     
  259.     PaletteCol0 = GetPaletteCol0( PalettePath )
  260.     
  261.     IF ( PaletteCol0 ~= "" ) THEN
  262.      DO
  263.       SetPref( "KADPT.PalettePath", PalettePath )
  264.       Continue = TRUE
  265.      END
  266.    END
  267.  END
  268.  
  269.  END
  270.  
  271.  PSTATUS "LOCKED"
  272.  
  273. /*
  274. ** Get a symbol file and check it.
  275. */
  276.  
  277.  SymbolPicsDir = GetPref( "KADPT.SymbolPicsDir" )
  278.  
  279.  IF ( RenderCardsType < 3 ) THEN
  280.  DO
  281.  
  282.  Continue = FALSE
  283.  DO UNTIL ( Continue = TRUE )
  284.   
  285.   IF ( SymbolPicsDir ~= "" ) THEN
  286.    GETFILE '"'TITLE_SelectSymbolPic'"' '"'ParseDir( SymbolPicsDir )'"' '""'
  287.   ELSE
  288.    GETFILE '"'TITLE_SelectSymbolPic'"'
  289.  
  290.   IF ( RC ~= 0 ) THEN
  291.    DO
  292.     OKAYN '"'TITLE_Error'"' '"'MSG_YouMustSelectSymbolPic'"' '"'GAD_SelectAbort'"'
  293.     IF ( RC = 0 ) THEN
  294.      CALL ConfirmAbort
  295.    END
  296.   ELSE
  297.    DO
  298.     SymbolPicPath = ADPRO_RESULT
  299.     
  300.     Text = MSG_CheckingSymbolPic FilePart( SymbolPicPath )
  301.     DISPLAYMESSAGE '"'Text'"'
  302.        
  303.     LOAD_TYPE "REPLACE"
  304.  
  305.     Continue0 = FALSE
  306.     DO UNTIL ( Continue0 = TRUE )
  307.   
  308.      LOADER "IFF" SymbolPicPath
  309.      
  310.      IF ( RC ~= 0 ) THEN
  311.       DO
  312.        IF ( ADPRO_RESULT = "Aborted" ) THEN
  313.         CALL ConfirmAbort
  314.        ELSE
  315.         DO
  316.          Text = MSG_UnableToLoadSymbolPic || DNL || ParseString( SymbolPicPath ) || ADProResult()
  317.          OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_RetrySelectAbort'"'
  318.          IF ( RC = 0 ) THEN
  319.           CALL ConfirmAbort
  320.          ELSE
  321.           IF ( RC = 2 ) THEN
  322.            Continue0 = TRUE
  323.         END
  324.       END
  325.      ELSE
  326.       DO
  327.        XSIZE
  328.        SymbolPicWidth = ADPRO_RESULT
  329.  
  330.        YSIZE
  331.        SymbolPicHeight = ADPRO_RESULT
  332.  
  333.        IF ( ( SymbolPicWidth = 88 ) & ( SymbolPicHeight = 130 ) ) THEN
  334.         DO
  335.          PPOKE 0
  336.        
  337.          IF ( RC ~= 0 ) THEN
  338.           DO
  339.            Text = MSG_UnableToGetColor || DNL || ParseString( SymbolPicPath ) || ADProResult()
  340.            OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_SelectAbort'"'
  341.            IF ( RC = 0 ) THEN
  342.             CALL ConfirmAbort
  343.           END
  344.          ELSE
  345.           DO
  346.            SymbolPicCol0 = ADPRO_RESULT
  347.  
  348.            SymbolPicsDir = DirPart( SymbolPicPath )
  349.            SymbolPicsBaseName = DelExt( FilePart( SymbolPicPath ) )
  350.  
  351.            Found = TRUE
  352.            NbSymbolPics = 0
  353.            Extension = 11
  354.     
  355.            DO UNTIL ( Found = FALSE )
  356.             FileExtension = RIGHT( Extension, 3, '0' )
  357.             SymbolPicPath = AddPart( SymbolPicsDir, AddExt( SymbolPicsBaseName, FileExtension ) )
  358.             Text = MSG_CheckingSymbolPic FilePart( SymbolPicPath )
  359.             DISPLAYMESSAGE '"'Text'"'
  360.             IF ( EXISTS( SymbolPicPath ) ) THEN
  361.              DO
  362.               NbSymbolPics = NbSymbolPics + 1
  363.               IF ( RIGHT( FileExtension, 1 ) = '4' ) THEN
  364.                Extension = Extension + 7
  365.               ELSE
  366.                Extension = Extension + 1
  367.              END
  368.             ELSE
  369.              Found = FALSE
  370.            END
  371.            
  372.            DISPLAYMESSAGE '""'
  373.           
  374.            IF ( NbSymbolPics = 52 ) THEN
  375.             DO
  376.              Continue0 = TRUE
  377.              Continue = TRUE
  378.             END
  379.            ELSE
  380.             DO
  381.              OKAYN '"'TITLE_Error'"' '"'MSG_MissingSymbolPic'"' '"'GAD_SelectAbort'"'
  382.              IF ( RC = 0 ) THEN
  383.               CALL ConfirmAbort
  384.              Continue0 = TRUE
  385.             END
  386.           END
  387.         END
  388.        ELSE
  389.         DO
  390.          OKAYN '"'TITLE_Error'"' '"'MSG_InvalidSymbolPicSize'"' '"'GAD_SelectAbort'"'
  391.          IF ( RC = 0 ) THEN
  392.           CALL ConfirmAbort
  393.          Continue0 = TRUE
  394.         END
  395.       END
  396.     END
  397.    END
  398.  
  399.  END
  400.  
  401.  SetPref( "KADPT.SymbolPicsDir", SymbolPicsDir )
  402.  
  403.  END
  404.  
  405. /*
  406. ** Get output directory for cards pictures.
  407. */
  408.  
  409.  CardPicsDir = GetPref( "KADPT.CardPicsDir" )
  410.  IF ( CardPicsDir = "" ) THEN
  411.   CardPicsDir = ScaledPicsDir
  412.  
  413.  IF ( RenderCardsType ~= 2 ) THEN
  414.  DO
  415.  
  416.  Continue = FALSE
  417.  DO UNTIL ( Continue = TRUE )
  418.  
  419.   IF ( CardPicsDir ~= "" ) THEN
  420.    GETDIR '"'TITLE_SelectCardPicsDir'"' '"'ParseDir( CardPicsDir )'"'
  421.   ELSE
  422.    GETDIR '"'TITLE_SelectCardPicsDir'"'
  423.  
  424.   IF ( RC ~= 0 ) THEN
  425.    CALL ConfirmAbort
  426.   ELSE
  427.    DO
  428.     CardPicsDir = ADPRO_RESULT
  429.     Continue = TRUE
  430.    END
  431.  
  432.  END
  433.  
  434.  SetPref( "KADPT.CardPicsDir", CardPicsDir )
  435.  
  436.  END
  437.  
  438. /*
  439. ** Get card pics base name.
  440. */
  441.  
  442.  CardPicsBaseName = GetPref( "KADPT.CardPicsBaseName" )
  443.  IF ( CardPicsBaseName = "" ) THEN
  444.   CardPicsBaseName = "Card"
  445.  
  446.  Continue = FALSE
  447.  DO UNTIL ( Continue = TRUE )
  448.  
  449.   GETSTRING '"'TITLE_EnterCardPicsBaseName'"' '"'CardPicsBaseName'"'
  450.   
  451.   IF ( RC ~= 0 ) THEN
  452.    CALL ConfirmAbort
  453.   ELSE
  454.    DO
  455.     CardPicsBaseName = ADPRO_RESULT
  456.     Continue = TRUE
  457.    END
  458.  END
  459.  
  460.  SetPref( "KADPT.CardPicsBaseName", CardPicsBaseName )
  461.     
  462. /*
  463. ** Initializaztions before creating cards pictures.
  464. */
  465.  
  466.  SET_RENDER_MODE Amiga 167940 88 130 HAM8
  467.  
  468. /*
  469. ** Create normals cards pictures.
  470. */
  471.  
  472.  IF ( RenderCardsType < 3 ) THEN
  473.  DO
  474.  
  475.  ScaledPic = 1
  476.  SymbolPic = 11
  477.  
  478.  DO CardPic = 3 TO 54
  479.  
  480.   CardPicPath = AddPart( CardPicsDir, AddExt( CardPicsBaseName, RIGHT( CardPic, 3, '0' ) ) )
  481.  
  482.   Processing = MSG_Processing FilePart( CardPicPath )
  483.  
  484.   /*
  485.   ** Compose a backdrop picture with a scaled picture
  486.   */
  487.   
  488.   Continue = FALSE
  489.   DO UNTIL ( Continue = TRUE)
  490.   
  491.    /*
  492.    ** Create backdrop picture.
  493.    */
  494.  
  495.    Text = Processing MSG_CreatingBackdropPic
  496.    DISPLAYMESSAGE '"'Text'"'
  497.  
  498.    LOAD_TYPE "REPLACE"
  499.  
  500.    Continue0 = FALSE
  501.    DO UNTIL ( Continue0 = TRUE )
  502.     
  503.     LOADER "BACKDROP" "XXX" "WIDTH" 88 "HEIGHT" 130 PaletteCol0 "COLOR"
  504.     
  505.     IF ( RC ~= 0 ) THEN
  506.      DO
  507.       IF ( ADPRO_RESULT = "Aborted" ) THEN
  508.        CALL ConfirmAbort
  509.       ELSE
  510.        DO
  511.         Text = MSG_UnableToCreateBackdropPic || ADProResult()
  512.         OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_RetryAbort'"'
  513.         IF ( RC = 0 ) THEN
  514.          CALL ConfirmAbort
  515.        END
  516.      END
  517.     ELSE
  518.      Continue0 = TRUE
  519.    
  520.    END
  521.  
  522.    /*
  523.    ** Compose with scaled picture.
  524.    */
  525.  
  526.    ScaledPicPath = AddPart( ScaledPicsDir, AddExt( ScaledPicsBaseName, RIGHT( ScaledPic, 3, '0' ) ) )
  527.  
  528.    Text = Processing MSG_ComposingWithScaledPic FilePart( ScaledPicPath )
  529.    DISPLAYMESSAGE '"'Text'"'
  530.  
  531.    LOAD_TYPE "COMPOSE"
  532.  
  533.    LOADER "IFF" ScaledPicPath 1 1 100 -1 -1 -1
  534.  
  535.    IF ( RC ~= 0 ) THEN
  536.     DO
  537.      IF ( ADPRO_RESULT = "Aborted" ) THEN
  538.       CALL ConfirmAbort
  539.      ELSE
  540.       DO
  541.        Text = MSG_UnableToLoadScaledPic || DNL || ParseString( ScaledPicPath ) || ADProResult()
  542.        IF ( NbScaledPics <= ( 52 - CardPic + 3 ) ) THEN
  543.         DO
  544.          OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_RetryAbort'"'
  545.          IF ( RC = 0 ) THEN
  546.           CALL ConfirmAbort
  547.         END
  548.        ELSE
  549.         DO
  550.          OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_RetrySkipAbort'"'
  551.          IF ( RC = 0 ) THEN
  552.           CALL ConfirmAbort
  553.          ELSE
  554.           IF ( RC = 2 ) THEN
  555.            DO
  556.             ScaledPic = ScaledPic + 1
  557.             NbScaledPics = NbScaledPics - 1
  558.            END
  559.         END
  560.       END
  561.     END
  562.    ELSE
  563.     DO
  564.      Continue = TRUE
  565.      ScaledPic = ScaledPic + 1
  566.      NbScaledPics = NbScaledPics - 1
  567.     END
  568.  
  569.   END
  570.   
  571.   /*
  572.   ** Render backdrop picture + scaled picture
  573.   */
  574.   
  575.   Text = Processing MSG_RenderingCardPass1
  576.   DISPLAYMESSAGE '"'Text'"'
  577.  
  578.   DITHER 1
  579.  
  580.   Continue = FALSE
  581.   DO UNTIL ( Continue = TRUE )
  582.  
  583.    EXECUTE
  584.  
  585.    IF ( RC ~= 0 ) THEN
  586.     DO
  587.      IF ( ADPRO_RESULT = "Aborted" ) THEN
  588.       CALL ConfirmAbort
  589.      ELSE
  590.       DO
  591.        Text = MSG_UnableToRenderScaledPic || DNL || ParseString( ScaledPicPath ) || ADProResult()
  592.        OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_RetryAbort'"'
  593.         IF ( RC = 0 ) THEN
  594.          CALL ConfirmAbort
  595.       END
  596.     END
  597.    ELSE
  598.     Continue = TRUE
  599.   
  600.   END
  601.  
  602.   /*
  603.   ** Convert result to 24 bits
  604.   */
  605.   
  606.   Continue = FALSE
  607.   DO UNTIL ( Continue = TRUE )
  608.  
  609.    OPERATOR "Rendered_To_Raw"
  610.    
  611.    IF ( RC ~= 0 ) THEN
  612.     DO
  613.      IF ( ADPRO_RESULT = "Aborted" ) THEN
  614.       CALL ConfirmAbort
  615.      ELSE
  616.       DO
  617.        Text = MSG_UnableToRenderScaledPic || DNL || ParseString( ScaledPicPath ) || ADProResult()
  618.        OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_RetryAbort'"'
  619.         IF ( RC = 0 ) THEN
  620.          CALL ConfirmAbort
  621.       END
  622.     END
  623.    ELSE
  624.     Continue = TRUE
  625.   
  626.   END
  627.  
  628.   /*
  629.   ** Compose with symbol picture.
  630.   */
  631.  
  632.   SymbolPicPath = AddPart( SymbolPicsDir, AddExt( SymbolPicsBaseName, RIGHT( SymbolPic, 3, '0' ) ) )
  633.  
  634.   IF ( RIGHT( SymbolPicPath, 1 ) = '4' ) THEN
  635.    SymbolPic = SymbolPic + 7
  636.   ELSE
  637.    SymbolPic = SymbolPic + 1
  638.  
  639.   Text = Processing MSG_ComposingWithSymbolPic FilePart( SymbolPicPath )
  640.   DISPLAYMESSAGE '"'Text'"'
  641.  
  642.   LOAD_TYPE "COMPOSE"
  643.  
  644.   Continue = FALSE
  645.   DO UNTIL ( Continue = TRUE )
  646.  
  647.    LOADER "IFF" SymbolPicPath 0 0 100 SymbolPicCol0
  648.  
  649.    IF ( RC ~= 0 ) THEN
  650.     DO
  651.      IF ( ADPRO_RESULT = "Aborted" ) THEN
  652.       CALL ConfirmAbort
  653.      ELSE
  654.       DO
  655.        Text = MSG_UnableToLoadSymbolPic || DNL || ParseString( SymbolPicPath || ADProResult()
  656.        OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_RetryAbort'"'
  657.        IF ( RC = 0 ) THEN
  658.         CALL ConfirmAbort
  659.       END
  660.     END
  661.    ELSE
  662.     Continue = TRUE
  663.  
  664.   END
  665.  
  666.   /*
  667.   ** Render backdrop picture + scaled picture + symbol picture
  668.   */
  669.   
  670.   Text = Processing MSG_RenderingCardPass2
  671.   DISPLAYMESSAGE '"'Text'"'
  672.  
  673.   DITHER 0
  674.  
  675.   Continue = FALSE
  676.   DO UNTIL ( Continue = TRUE )
  677.  
  678.    EXECUTE
  679.  
  680.    IF ( RC ~= 0 ) THEN
  681.     DO
  682.      IF ( ADPRO_RESULT = "Aborted" ) THEN
  683.       CALL ConfirmAbort
  684.      ELSE
  685.       DO
  686.        Text = MSG_UnableToRenderCardPic || DNL || ParseString( CardPicPath ) || ADProResult()
  687.        OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_RetryAbort'"'
  688.        IF ( RC = 0 ) THEN
  689.         CALL ConfirmAbort
  690.       END
  691.     END
  692.    ELSE
  693.     Continue = TRUE
  694.   END
  695.  
  696.   /*
  697.   ** Save card picture.
  698.   */
  699.  
  700.   Text = Processing MSG_SavingCard
  701.   DISPLAYMESSAGE '"'Text'"'
  702.  
  703.   Continue = FALSE
  704.   DO UNTIL ( Continue = TRUE )
  705.  
  706.    SAVER "IFF" CardPicPath "IMAGE"
  707.  
  708.     IF ( RC ~= 0 ) THEN
  709.      DO
  710.       IF ( ADPRO_RESULT = "Aborted" ) THEN
  711.        CALL ConfirmAbort
  712.       ELSE
  713.        DO
  714.         Text = MSG_UnableToSaveCardPic || DNL || ParseString( CardPicPath ) || ADProResult()
  715.         OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_RetryAbort'"'
  716.         IF ( RC = 0 ) THEN
  717.          CALL ConfirmAbort
  718.        END
  719.      END
  720.     ELSE
  721.      Continue = TRUE
  722.   END
  723.  END
  724.  
  725.  END
  726.  
  727. /*
  728. ** Get type of cardset.
  729. */
  730.  
  731.  IF ( RenderCardsType ~= 2 ) THEN
  732.  DO
  733.  
  734.  Continue = FALSE
  735.  DO UNTIL ( Continue = TRUE )
  736.   OKAYN '"'TITLE_SelectCardsetType'"' '"'MSG_CarsetType'"' '"'GAD_StdExtAbort'"'
  737.   IF ( RC = 0 ) THEN
  738.    CALL ConfirmAbort
  739.   ELSE
  740.    DO
  741.     IF ( RC = 1 ) THEN
  742.      NumberOfCards = 55
  743.     ELSE
  744.      NumberOfCards = 59
  745.     Continue = TRUE
  746.    END
  747.  END
  748.  
  749.  END
  750.  
  751. /*
  752. ** Render extras cards Card00->Card02 (& Card55->Card58).
  753. */
  754.  
  755.  IF ( ( RenderCardsType = 1 ) | ( RenderCardsType = 3 ) ) THEN
  756.  DO
  757.  
  758.  ExtraPicPath = ""
  759.  
  760.  CALL CreateExtraCards 0 2 FALSE
  761.  IF ( RC ~= 0 ) THEN
  762.   CALL Quit
  763.  ELSE
  764.   CALL CreateExtraCards 2 1 TRUE
  765.  
  766.  IF ( NumberOfCards = 59 ) THEN
  767.   DO
  768.    CALL CreateExtraCards 55 4 TRUE
  769.    IF ( RC ~= 0 ) THEN
  770.     CALL Quit
  771.   END
  772.  
  773.  END
  774.  
  775. /*
  776. ** Quit.
  777. */
  778.  
  779. Quit:
  780.  
  781.  CLOSE_RENDER_SCREEN
  782.  CLEAR_RENDERED
  783.  CLEAR_RAW
  784.  DISPLAYMESSAGE '""'
  785.  
  786.  IF ( EXISTS( TempDefaults ) ) THEN
  787.   DO
  788.    LOAD_DEFAULTS '"'TempDefaults'"'
  789.    IF ( RC ~= 0 ) THEN
  790.     DO
  791.      Text = MSG_UnableToRestoreADProPrefs || ADProResult()
  792.      OKAY1 '"'Text'"'
  793.     END
  794.    ADDRESS COMMAND 'C:Delete >NIL: FILE="' || TempDefaults || '" QUIET'
  795.   END
  796.  
  797.  EXIT ReturnCode
  798.  
  799. RETURN
  800.  
  801. /*
  802. ** Functions.
  803. */
  804.  
  805. CheckScaledPics:
  806.  
  807.  PARSE ARG ScaledPicPath
  808.  
  809.  RetVal = "0"
  810.  
  811.  Text = MSG_CheckingScaledPic FilePart( ScaledPicPath )
  812.  DISPLAYMESSAGE '"'Text'"'
  813.     
  814.  LOAD_TYPE "REPLACE"
  815.  
  816.  Continue01 = FALSE
  817.  DO UNTIL ( Continue01 = TRUE )
  818.  
  819.   LOADER "IFF" ScaledPicPath
  820.   
  821.   IF ( RC ~= 0 ) THEN
  822.    DO
  823.     IF ( ADPRO_RESULT = "Aborted" ) THEN
  824.      CALL ConfirmAbort
  825.     ELSE
  826.      DO
  827.       Text = MSG_UnableToLoadScaledPic || DNL || ParseString( ScaledPicPath ) || ADProResult()
  828.       IF ( Mode = "AUTO" ) THEN
  829.        Gad = GAD_RetryAbort
  830.       ELSE
  831.        Gad = GAD_RetrySelectAbort
  832.       OKAYN '"'TITLE_Error'"' '"'Text'"' '"'Gad'"'
  833.       IF ( RC = 0 ) THEN
  834.        CALL ConfirmAbort "NOCHECK"
  835.       ELSE
  836.        IF ( RC = 2 ) THEN
  837.         Continue01 = TRUE
  838.      END
  839.    END
  840.   ELSE
  841.    DO
  842.     XSIZE
  843.     ScaledPicWidth = ADPRO_RESULT
  844.  
  845.     YSIZE
  846.     ScaledPicHeight = ADPRO_RESULT
  847.  
  848.     IF ( ( ScaledPicWidth = 86 ) & ( ScaledPicHeight = 128 ) ) THEN
  849.      DO
  850.       ScaledPicsDir = DirPart( ScaledPicPath )
  851.       ScaledPicsBaseName = DelExt( FilePart( ScaledPicPath ) )
  852.  
  853.       Continue02 = TRUE
  854.       NbScaledPics = 0
  855.       Extension = 1
  856.  
  857.       DO UNTIL ( ( Continue02 = FALSE ) | ( NbScaledPics = 52 ) )
  858.        FileExtension = RIGHT( Extension, 3, '0' )
  859.        ScaledPicPath = AddPart( ScaledPicsDir, AddExt( ScaledPicsBaseName, FileExtension ) )
  860.        Text = MSG_CheckingScaledPic FilePart( ScaledPicPath )
  861.        DISPLAYMESSAGE '"'Text'"'
  862.        IF ( EXISTS( ScaledPicPath ) ) THEN
  863.         DO
  864.          NbScaledPics = NbScaledPics + 1
  865.          Extension = Extension + 1
  866.         END
  867.        ELSE
  868.         Continue02 = FALSE
  869.       END
  870.  
  871.       DISPLAYMESSAGE '""'
  872.        
  873.       IF ( NbScaledPics = 52 ) THEN
  874.        DO
  875.         RetVal = NbScaledPics ScaledPicsDir ScaledPicsBaseName
  876.         Continue01 = TRUE
  877.        END
  878.       ELSE
  879.        DO
  880.         Text = MSG_MissingScaledPic || DNL || ScaledPicPath
  881.         IF ( Mode = "AUTO" ) THEN
  882.          Gad = GAD_Abort
  883.         ELSE
  884.          Gad = GAD_SelectAbort
  885.         OKAYN '"'TITLE_Error'"' '"'Text'"' '"'Gad'"'
  886.         IF ( RC = 0 ) THEN
  887.          CALL ConfirmAbort "NOCHECK"
  888.         Continue01 = TRUE
  889.        END
  890.      END
  891.     ELSE
  892.      DO
  893.       Text = MSG_InvalidScaledPicSize || DNL || ScaledPicPath
  894.       IF ( Mode = "AUTO" ) THEN
  895.        Gad = GAD_Abort
  896.       ELSE
  897.        Gad = GAD_SelectAbort
  898.       OKAYN '"'TITLE_Error'"' '"'Text'"' '"'Gad'"'
  899.       IF ( RC = 0 ) THEN
  900.        CALL ConfirmAbort "NOCHECK"
  901.       Continue01 = TRUE
  902.      END
  903.    END
  904.  END
  905.  
  906. RETURN RetVal
  907.  
  908. GetPaletteCol0:
  909.  
  910.  PARSE ARG PalettePath
  911.  
  912.  PaletteCol0 = ""
  913.  
  914.  PLOAD PalettePath
  915.  
  916.  IF ( RC ~= 0 ) THEN
  917.   DO
  918.    IF ( ADPRO_RESULT = "Aborted" ) THEN
  919.     CALL ConfirmAbort "NOCHECK"
  920.    ELSE
  921.     DO
  922.      Text = MSG_UnableToLoadPalette || DNL || ParseString( PalettePath ) || ADProResult()
  923.      IF ( Mode = "AUTO" ) THEN
  924.       Gad = GAD_Abort
  925.      ELSE
  926.       Gad = GAD_SelectAbort
  927.      OKAYN '"'TITLE_Error'"' '"'Text'"' '"'Gad'"'
  928.      IF ( RC = 0 ) THEN
  929.       CALL ConfirmAbort "NOCHECK"
  930.     END
  931.   END
  932.  ELSE
  933.   DO
  934.    PPOKE 0
  935.    
  936.    IF ( RC ~= 0 ) THEN
  937.     DO
  938.      Text = MSG_UnableToExtractPaletteInfos || DNL || ParseString( PalettePath ) || ADProResult()
  939.      IF ( Mode = "AUTO" ) THEN
  940.       Gad = GAD_Abort
  941.      ELSE
  942.       Gad = GAD_SelectAbort
  943.      OKAYN '"'TITLE_Error'"' '"'Text'"' '"'Gad'"'
  944.      IF ( RC = 0 ) THEN
  945.       CALL ConfirmAbort
  946.     END
  947.    ELSE
  948.     DO
  949.      PaletteCol0 = ADPRO_RESULT
  950.      Continue = TRUE
  951.     END
  952.   END
  953.  
  954. RETURN PaletteCol0
  955.  
  956. CreateExtraCards:
  957.  
  958.  PARSE ARG CardPicStart NbCardPics DitherMode
  959.  
  960.  ExtraPicsDir = GetPref( "KADPT.ExtraPicsDir" )
  961.  IF ( ExtraPicsDir = "" ) THEN
  962.   ExtraPicsDir = SymbolPicsDir
  963.  
  964.  DO CardPic = CardPicStart TO ( CardPicStart + NbCardPics - 1 )
  965.  
  966.   Continue = FALSE
  967.   DO UNTIL ( Continue = TRUE )
  968.  
  969.    Title = TITLE_SelectExtraPic AddExt( CardPicsBaseName, RIGHT( CardPic, 3, '0' ) ) ":"
  970.  
  971.    GETFILE '"'Title'"' '"'ParseDir( ExtraPicsDir )'"' '"'FilePart( ExtraPicPath )'"'
  972.  
  973.    IF ( RC ~= 0 ) THEN
  974.     CALL ConfirmAbort
  975.    ELSE
  976.     DO
  977.      ExtraPicPath = ADPRO_RESULT
  978.      
  979.      ExtraPicsDir = DirPart( ExtraPicPath )
  980.  
  981.      SetPref( "KADPT.ExtraPicsDir", ExtraPicsDir )
  982.  
  983.      Text = MSG_CheckingExtraPic FilePart( ExtraPicPath )
  984.      DISPLAYMESSAGE '"'Text'"'
  985.       
  986.      LOAD_TYPE "REPLACE"
  987.  
  988.      Continue0 = FALSE
  989.      DO UNTIL ( Continue0 = TRUE )
  990.  
  991.       LOADER "UNIVERSAL" ExtraPicPath
  992.     
  993.       IF ( RC ~= 0 ) THEN
  994.        DO
  995.         Text = MSG_UnableToLoadExtraPic || DNL || ParseString( ExtraPicPath ) || ADProResult()
  996.         OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_RetrySelectAbort'"'
  997.         IF ( RC = 0 ) THEN
  998.          CALL ConfirmAbort
  999.         ELSE
  1000.          IF ( RC = 2 ) THEN
  1001.           Continue0 = TRUE
  1002.        END
  1003.       ELSE
  1004.        DO
  1005.         Continue1 = FALSE
  1006.         
  1007.         XSIZE
  1008.         ExtraPicWidth = ADPRO_RESULT
  1009.  
  1010.         YSIZE
  1011.         ExtraPicHeight = ADPRO_RESULT
  1012.  
  1013.         IF ( ( ExtraPicWidth < 88 ) & ( ExtraPicHeight < 130 ) ) THEN
  1014.          DO
  1015.           Text = MSG_InvalidExtraPicSizeSmall || DNL || ParseString( ExtraPicPath )
  1016.           OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_SelectAbort'"'
  1017.           IF ( RC = 0 ) THEN
  1018.            CALL ConfirmAbort
  1019.           Continue0 = TRUE
  1020.          END
  1021.         ELSE
  1022.          IF ( ( ExtraPicWidth > 88 ) | ( ExtraPicHeight > 130 ) ) THEN
  1023.           DO
  1024.            Text = MSG_InvalidExtraPicSizeBig || DNL || ParseString( ExtraPicPath )
  1025.            OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_ScaleSelectAbort'"'
  1026.            IF ( RC = 0 ) THEN
  1027.             DO
  1028.              CALL ConfirmAbort
  1029.              Continue0 = TRUE
  1030.             END
  1031.            ELSE
  1032.             IF ( RC = 1 ) THEN
  1033.              DO
  1034.               Continue2 = FALSE
  1035.               DO UNTIL ( Continue2 = TRUE )
  1036.  
  1037.                ABS_SCALE 88 130
  1038.               
  1039.                IF ( RC ~= 0 ) THEN
  1040.                 DO
  1041.                  Text = MSG_UnableToScaleExtraPic || DNL || ParseString( ExtraPicPath ) || ADProResult()
  1042.                  OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_SelectAbort'"'
  1043.                  IF ( RC = 0 ) THEN
  1044.                   CALL ConfirmAbort
  1045.                  Continue2 = TRUE
  1046.                  Continue0 = TRUE
  1047.                 END
  1048.                ELSE
  1049.                 DO
  1050.                  Continue2 = TRUE
  1051.                  Continue1 = TRUE
  1052.                  Continue0 = TRUE
  1053.                 END
  1054.               END
  1055.              END
  1056.             ELSE
  1057.              Continue0 = TRUE
  1058.           END
  1059.          ELSE
  1060.           DO
  1061.            Continue1 = TRUE
  1062.            Continue0 = TRUE
  1063.           END
  1064.  
  1065.         IF ( Continue1 = TRUE ) THEN
  1066.          DO
  1067.           DITHER DitherMode
  1068.  
  1069.           Continue2 = FALSE
  1070.           DO UNTIL ( Continue2 = TRUE )
  1071.            
  1072.            EXECUTE
  1073.  
  1074.            IF ( RC ~= 0 ) THEN
  1075.             DO
  1076.              IF ( ADPRO_RESULT = "Aborted" ) THEN
  1077.               CALL ConfirmAbort
  1078.              ELSE
  1079.               DO
  1080.                Text = MSG_UnableToCreateExtraPic || DNL || ParseString( ExtraPicPath ) || ADProResult()
  1081.                OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_RetryAbort'"'
  1082.                IF ( RC = 0 ) THEN
  1083.                 CALL ConfirmAbort
  1084.               END
  1085.             END
  1086.            ELSE
  1087.             Continue2 = TRUE
  1088.           
  1089.            CardPicPath = AddPart( CardPicsDir, AddExt( CardPicsBaseName, RIGHT( CardPic, 3, '0' ) ) )
  1090.  
  1091.            Continue2 = FALSE
  1092.            DO UNTIL ( Continue1 = TRUE )
  1093.  
  1094.             SAVER "IFF" CardPicPath "IMAGE"
  1095.            
  1096.             IF ( RC ~= 0 ) THEN
  1097.              DO
  1098.               IF ( ADPRO_RESULT = "Aborted" ) THEN
  1099.                CALL ConfirmAbort
  1100.               ELSE
  1101.                DO
  1102.                 Text = MSG_UnableToSaveExtraCardPic || DNL || ParseString( CardPicPath ) || ADProResult()
  1103.                 OKAYN '"'TITLE_Error'"' '"'Text'"' '"'GAD_RetryAbort'"'
  1104.                 IF ( RC = 0 ) THEN
  1105.                  CALL ConfirmAbort
  1106.                END
  1107.              END
  1108.             ELSE
  1109.              DO
  1110.               Continue2 = TRUE
  1111.               Continue1 = TRUE
  1112.               Continue0 = TRUE
  1113.               Continue = TRUE
  1114.              END
  1115.           
  1116.            END
  1117.           END
  1118.          END
  1119.        END
  1120.      END
  1121.     END
  1122.   END
  1123.  END
  1124.  
  1125. RETURN 0
  1126.  
  1127. /*
  1128. ** Sub Routines
  1129. */
  1130.  
  1131. ADProResult:
  1132.  ADProResultText = DNL || MSG_ErrorCode RC || NL || MSG_ADProResult ADPRO_RESULT
  1133. RETURN ADProResultText
  1134.  
  1135. ConfirmAbort:
  1136.  
  1137.  PARSE ARG Check
  1138.  
  1139.  IF ( ( Mode = "AUTO" ) & ( Check = "NOCHECK" ) ) THEN
  1140.   DO
  1141.    ReturnCode = 20
  1142.    CALL Quit
  1143.   END
  1144.  ELSE
  1145.   DO
  1146.    OKAYN '"'TITLE_Confirm'"' '"'MSG_Abort'"' '"'GAD_ContinueAbort'"'
  1147.    IF ( RC = 0 ) THEN
  1148.     DO
  1149.      ReturnCode = 20
  1150.      CALL Quit
  1151.     END
  1152. RETURN
  1153.  
  1154. ParseString: PROCEDURE
  1155.  PARSE ARG String
  1156. RETURN STRIP( String, 'B', '"' )
  1157.  
  1158. ParseDir: PROCEDURE
  1159.  PARSE ARG Dir
  1160.  Dir = ParseString( Dir )
  1161.  Dir = STRIP( Dir, 'T', '/' )
  1162. RETURN Dir
  1163.  
  1164. DirPart: PROCEDURE
  1165.  PARSE ARG Path
  1166.  Path = ParseString( Path )
  1167.  FNameSepPos = LASTPOS( '/', Path )
  1168.  IF ( FNameSepPos = 0 ) THEN
  1169.   RETURN LEFT( Path, LASTPOS( ':', Path ) )
  1170.  ELSE
  1171.   RETURN LEFT( Path, FNameSepPos - 1 )
  1172.  
  1173. FilePart:
  1174.  PARSE ARG Path
  1175.  Path = ParseString( Path )
  1176.  FNameSepPos = LASTPOS( '/', Path )
  1177.  IF ( FNameSepPos = 0 ) THEN
  1178.   FNameSepPos = LASTPOS( ':', Path )
  1179. RETURN RIGHT( Path, LENGTH( Path ) - FNameSepPos )
  1180.  
  1181. AddPart:
  1182.  PARSE ARG Dir, Name
  1183.  LastChar = RIGHT( Dir, 1 )
  1184.  IF (( LastChar ~= "/" ) & ( LastChar ~= ":" )) THEN
  1185.   Dir = Dir || "/"
  1186. RETURN Dir || Name
  1187.  
  1188. AddExt:
  1189.  PARSE ARG Name, Ext
  1190. RETURN Name || "." || Ext
  1191.  
  1192. DelExt:
  1193.  PARSE ARG Name
  1194.  PointPos = LASTPOS( '.', Name )
  1195.  if ( PointPos ~= 0 ) THEN
  1196.   Name = DELSTR( Name, PointPos )
  1197. RETURN Name
  1198.  
  1199. GetPref: PROCEDURE
  1200.  PARSE ARG Name
  1201.  
  1202.  Pref = GETCLIP( Name )
  1203.  IF ( Pref = "" ) THEN
  1204.   DO
  1205.    IF ( OPEN( FileHandle, AddPart( "ENVARC:Klondike_ADPTools", Name ), "READ" ) ) THEN
  1206.     DO
  1207.      Pref = READLN( FileHandle )
  1208.      Dummy = CLOSE( FileHandle )
  1209.     END
  1210.   END
  1211. RETURN Pref
  1212.  
  1213. SetPref: PROCEDURE
  1214.  PARSE ARG Name, Pref
  1215.  
  1216.  Dummy = SETCLIP( Name, Pref )
  1217.  
  1218.  IF ( ~EXISTS( "ENVARC:Klondike_ADPTools" ) ) THEN
  1219.   ADDRESS COMMAND 'C:MakeDir >NIL: ENVARC:Klondike_ADPTools'
  1220.   
  1221.  IF ( OPEN( FileHandle, AddPart( "ENVARC:Klondike_ADPTools", Name ), "WRITE" ) ) THEN
  1222.   DO
  1223.    Dummy = WRITELN( FileHandle, Pref )
  1224.    Dummy = CLOSE( FileHandle )
  1225.   END
  1226. RETURN Pref
  1227.  
  1228.